{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "intro",
   "metadata": {},
   "source": [
    "# Combinaciones de condicionales, bucles y colecciones en Python"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "concepto",
   "metadata": {},
   "source": [
    "## Paso 1: Combinando condicionales, bucles y colecciones\n",
    "En Python, puedes combinar condicionales (`if`), bucles (`for`, `while`) y colecciones (listas, diccionarios, etc.) para crear programas potentes que resuelvan problemas complejos. Te mostraremos cómo funciona esta combinación de forma sencilla.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "lista-condicional",
   "metadata": {},
   "source": [
    "Listas con condicionales\n",
    "Imagina que tienes una lista de números y quieres imprimir solo los pares. Para ello, usamos un bucle \"for\" para iterar sobre la lista y, dentro del bucle, una sentencia \"if\" para comprobar si el número es par."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-lista-condicional",
   "metadata": {},
   "outputs": [],
   "source": [
    "numbers = [1, 2, 3, 4, 5, 6]\n",
    "for num in numbers:\n",
    "    if num % 2 == 0:  # Conditional to check if the number is even\n",
    "        print(num)  # Print the number if it is even"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "while-lista",
   "metadata": {},
   "source": [
    "Listas con bucles `while`\n",
    "También puedes usar un bucle `while` para iterar sobre una lista. Por ejemplo, si quieres contar hasta el primer número mayor que 3 en una lista, puedes hacerlo así:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-while-lista",
   "metadata": {},
   "outputs": [],
   "source": [
    "numbers = [1, 2, 3, 4, 5, 6]\n",
    "index = 0\n",
    "while numbers[index] <= 3:\n",
    "    print(numbers[index])\n",
    "    index += 1  # Increment index to move to the next number"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "diccionario-condicional",
   "metadata": {},
   "source": [
    "### Diccionarios con condicionales\n",
    "En los diccionarios, se puede usar un condicional para acceder a valores específicos. Por ejemplo, si tiene un diccionario con las edades de las personas, puede imprimir solo las mayores de 18 años."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-diccionario-condicional",
   "metadata": {},
   "outputs": [],
   "source": [
    "people = {'Alice': 22, 'Bob': 17, 'Charlie': 20}\n",
    "for name, age in people.items():\n",
    "    if age >= 18:\n",
    "        print(f'{name} is over 18 years old.')  # Prints only people older than 18"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "set-bucle",
   "metadata": {},
   "source": [
    "### Conjuntos con bucles\n",
    "Puedes usar un bucle para iterar sobre un conjunto, que es una colección de elementos únicos. Por ejemplo, si tienes un conjunto de números y quieres imprimir solo los impares:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-set-bucle",
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_numbers = {1, 2, 3, 4, 5, 6}\n",
    "for num in unique_numbers:\n",
    "    if num % 2 != 0:  # Check if the number is odd\n",
    "        print(num)  # Print only odd numbers"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "combinacion-condicional-bucle-lista",
   "metadata": {},
   "source": [
    "### Combinación de condicionales, bucles y listas\n",
    "Una forma muy común de usar estas combinaciones es recorrer una lista con un bucle `for` y aplicar una condición dentro de ese bucle para realizar una acción específica. Por ejemplo, se puede tener una lista de números y calcular solo la suma de los positivos.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-combinacion-bucle-condicional",
   "metadata": {},
   "outputs": [],
   "source": [
    "numbers = [-1, 2, -3, 4, 5]\n",
    "sum_positive = 0\n",
    "for num in numbers:\n",
    "    if num > 0:  # Only sum positive numbers\n",
    "        sum_positive += num\n",
    "print('The sum of positive numbers is:', sum_positive)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "combinacion-condicional-bucle-diccionario",
   "metadata": {},
   "source": [
    "### Combinación de condicionales, bucles y diccionarios\n",
    "Si tiene un diccionario y desea aplicar un condicional a los valores para realizar una acción, puede hacerlo dentro de un bucle. Por ejemplo, supongamos que tiene un diccionario con nombres y edades, y desea imprimir solo a los mayores de 18 años."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-diccionario-bucle-condicional",
   "metadata": {},
   "outputs": [],
   "source": [
    "people = {'Alice': 22, 'Bob': 17, 'Charlie': 20}\n",
    "for name, age in people.items():\n",
    "    if age > 18:  # Only print people over 18 years old\n",
    "        print(f'{name} is over 18 years old.')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio",
   "metadata": {},
   "source": [
    "## Paso 2: Ejercicios prácticos\n",
    "Ahora que has visto algunos ejemplos, es hora de practicar lo aprendido.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio-1",
   "metadata": {},
   "source": [
    "### Ejercicio 1: Suma de números positivos\n",
    "Crea una lista de números que incluya tanto positivos como negativos. Luego, usa un bucle \"for\" y una condición para sumar solo los números positivos de la lista. Imprime el resultado."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio-2",
   "metadata": {},
   "source": [
    "Ejercicio 2: Filtrar personas mayores de 18 años\n",
    "Crea un diccionario con los nombres y edades de las personas. Luego, usa un bucle `for` y una condición para imprimir solo las personas mayores de 18 años."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio-3",
   "metadata": {},
   "source": [
    "Ejercicio 3: Contar números pares en una lista\n",
    "Crea una lista de números. Escribe un programa que cuente cuántos números pares hay en la lista. Imprime el recuento de números pares."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.x"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
